//package com.inspur.edp.cef.generator.coreGenerator.base.serializer;
//
//import com.inspur.edp.cef.designtime.api.IGspCommonField;
//import com.inspur.edp.cef.generator.coreGenerator.base.entityGenerator.CefDataTypeImplGeneratorContext;
//import com.inspur.edp.cef.generator.coreGenerator.entityGenerator.serializer.CMChangeJsonConvertorGenUtils;
//import com.inspur.edp.cef.generator.overall.GenUtils;
//import com.inspur.edp.cef.spi.jsonser.base.StringUtils;
//import com.inspur.edp.das.commonmodel.IGspCommonElement;
//import org.eclipse.jdt.core.dom.AST;
//import org.eclipse.jdt.core.dom.MethodInvocation;
//import org.eclipse.jdt.core.dom.StringLiteral;
//import org.eclipse.jdt.core.dom.SwitchCase;
//import org.eclipse.jdt.core.dom.SwitchStatement;
//
//public final class SerItemGenUtil {
//
//  public static void buildSwitchLables(
//      AST ast, SwitchStatement switchStatement, String propertyName) {
//    SwitchCase propNameCase = ast.newSwitchCase();
//    StringLiteral propNameLiteral = ast.newStringLiteral();
//    propNameLiteral.setLiteralValue(propertyName);
//    propNameCase.setExpression(propNameLiteral);
//    switchStatement.statements().add(propNameCase);
//    String camelPropName = StringUtils.toCamelCase(propertyName);
//    if (camelPropName != propertyName) {
//      SwitchCase camelPropNameCase = ast.newSwitchCase();
//      StringLiteral camelPropNameLiteral = ast.newStringLiteral();
//      camelPropNameLiteral.setLiteralValue(camelPropName);
//      camelPropNameCase.setExpression(camelPropNameLiteral);
//      switchStatement.statements().add(camelPropNameCase);
//    }
//  }
//
//  // TODO: 放到cef元数据上
//
//  public static String getAssociationTypeName(IGspCommonField element) {
//    return element instanceof IGspCommonElement
//        ? ((IGspCommonElement) element).getAssociationTypeName()
//        : element.getLabelID() + "Info";
//  }
//
//  public static String getEnumTypeName(IGspCommonField element) {
//    return element instanceof IGspCommonElement
//        ? ((IGspCommonElement) ((element instanceof IGspCommonElement) ? element : null))
//        .getEnumTypeName()
//        : element.getLabelID() + "Enum";
//  }
//
//  /**
//   * 是否启用标准时区格式
//   * @param dataTypeGenContext
//   * @return
//   */
//  public static Boolean getEnableStdDateTime(CefDataTypeImplGeneratorContext dataTypeGenContext) {
//    if (dataTypeGenContext == null) {
//      return false;
//    }
//    return dataTypeGenContext.coreGenContext.getEnableStdDateTime();
//  }
//
//  /**
//   * udt序列化/反序列化方法添加参数getNestedSerializeContext()
//   * aram ast
//   * @param readNestedInvocation
//   */
//  public static void addGetNestedSerializeContextArg(AST ast,
//      MethodInvocation readNestedInvocation) {
//    readNestedInvocation.arguments().add(
//        GenUtils.getMethodInvocation(ast, null,
//            CMChangeJsonConvertorGenUtils.mName_GetNestedSerializeContext));
//  }
//
//  public static void addGetNestedSerializeContextArg_EnrichedAssoUdt(IGspCommonField field, AST ast,
//      MethodInvocation readNestedInvocation) {
//    readNestedInvocation.arguments().add(
//        GenUtils.getMethodInvocation(ast, null, getEnrichedSerializeContextMethodName(field)));
//  }
//
//  public static String getEnrichedSerializeContextMethodName(IGspCommonField field) {
//    return String.format(CMChangeJsonConvertorGenUtils.mName_GetSimpleAssoUdtSerializeContext,
//        field.getLabelID());
//  }
//}
